home *** CD-ROM | disk | FTP | other *** search
/ The Original Shareware 1.1 / The Original Shareware (WeMake CDs)(Volume 1.1)(CDs, Inc)(1993).iso / 19 / madtrb14.zip / FINV.PAS < prev    next >
Pascal/Delphi Source File  |  1985-05-17  |  3KB  |  63 lines

  1. (*--------------------------------------------------------------------------*)
  2. (*                 Finv -- Inverse Central F Distribution                   *)
  3. (*--------------------------------------------------------------------------*)
  4.  
  5. FUNCTION Finv( Alpha, Dfn, Dfe: REAL ) : REAL;
  6.  
  7. (*--------------------------------------------------------------------------*)
  8. (*                                                                          *)
  9. (*       Function:  Finv                                                    *)
  10. (*                                                                          *)
  11. (*       Purpose:   Calculates central inverse F                            *)
  12. (*                                                                          *)
  13. (*       Calling Sequence:                                                  *)
  14. (*                                                                          *)
  15. (*            Fval   := Finv( Alpha, Dfn, Dfe : REAL ) : REAL;              *)
  16. (*                                                                          *)
  17. (*                 Alpha  --- Probability value                             *)
  18. (*                 Dfn    --- Numerator Df                                  *)
  19. (*                 Dfe    --- Denominator Df                                *)
  20. (*                                                                          *)
  21. (*                 Fval   --- returned F-value corresponding to 'Alpha'.    *)
  22. (*                                                                          *)
  23. (*       Calls:                                                             *)
  24. (*                                                                          *)
  25. (*            BetaInv (Inverse Beta Distribution)                           *)
  26. (*                                                                          *)
  27. (*       Remarks:                                                           *)
  28. (*                                                                          *)
  29. (*            Any error results in '-1.0' as returned F value.              *)
  30. (*                                                                          *)
  31. (*--------------------------------------------------------------------------*)
  32.  
  33. CONST
  34.    MaxIter  = 100;
  35.    Dprec    = 10;
  36.  
  37. VAR
  38.    Fin:   REAL;
  39.    Iter:  INTEGER;
  40.    Cprec: REAL;
  41.    Ierr:  INTEGER;
  42.  
  43. BEGIN (* Finv *)
  44.  
  45.    Fin   := -1.0;
  46.  
  47.    IF( ( Dfn > 0.0 ) AND ( Dfe > 0.0 ) ) THEN
  48.  
  49.       IF( ( Alpha >= 0.0 ) AND ( Alpha <= 1.0 ) ) THEN
  50.  
  51.          BEGIN
  52.  
  53.             Fin := BetaInv( 1.0 - Alpha, Dfn/2.0, Dfe/2.0, MaxIter, Dprec,
  54.                             Iter,  Cprec, Ierr  );
  55.  
  56.             IF( ( Fin >= 0.0 ) AND ( Fin < 1.0 ) AND ( Ierr = 0 ) ) THEN
  57.                   Fin  := Fin * Dfe / ( Dfn * ( 1.0 - Fin ) );
  58.  
  59.          END;
  60.  
  61.    Finv := Fin;
  62.  
  63. END   (* Finv *);